package com.mmy.service.plane.impl;

import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ResourceLoader;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.mmy.controller.FileNameUtils;
import com.mmy.controller.UtilConstants;
import com.mmy.dao.plane.TPlaneOrgRepository;
import com.mmy.domain.plane.TPlaneOrg;
import com.mmy.domain.sys.TSysUser;
import com.mmy.service.ServiceCommon;
import com.mmy.service.plane.PlaneOrgService;

@Service
public class PlaneOrgServiceImpl implements PlaneOrgService {

	@Autowired
	TPlaneOrgRepository tPlaneOrgRepository;
	@Autowired
	ServiceCommon common;
	private final ResourceLoader resourceLoader;

	@Autowired
	public PlaneOrgServiceImpl(ResourceLoader resourceLoader) {
		this.resourceLoader = resourceLoader;
	}

	@Value("${web.upload-path}")
	private String planePath;

	/**
	 * 函数功能说明：后台航空公司信息管理 显示航空公司基本信息
	 * 
	 * 创建航班信息时使用
	 * 
	 * 前台飞机票菜单 显示所有航空公司
	 *
	 * @param 参数说明 tPlaneOrg
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl 修改人hanxl
	 * @date 创建日期 2020.11.18 修改时间2021.03.16
	 */
	public List<TPlaneOrg> findAll() {
		List<TPlaneOrg> lstPlaneOrg = tPlaneOrgRepository.findAll();
		return lstPlaneOrg;
	}

	/**
	 * 后台航空公司信息管理 显示航空公司基本信息 异步加载表格
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间2021.02.22
	 */
	public List<TPlaneOrg> findSearch(String strPlaneOrgName, String strName, String strTel, int startIndex,
			int count) {

		if (strPlaneOrgName == null)
			strPlaneOrgName = "";
		if (strName == null)
			strName = "";
		if (strTel == null)
			strTel = "";
		List<TPlaneOrg> latPlaneOrg = tPlaneOrgRepository.findSearchALL(strPlaneOrgName, strName, strTel, startIndex,
				count);

		return latPlaneOrg;
	}

	/**
	 * 后台航空公司信息管理中显示全部 分页
	 *
	 * @author 创建人 hanxl 整理 修改人hanxl
	 * @date 创建日期 2020.11.19 修改时间2021.02.22
	 */
	public int queryCount(String strPlaneOrgName, String strName, String strTel) {
		if (strPlaneOrgName == null)
			strPlaneOrgName = "";
		if (strName == null)
			strName = "";
		if (strTel == null)
			strTel = "";
		int count = tPlaneOrgRepository.countSearchALL(strPlaneOrgName, strName, strTel);

		return count;
	}

	/**
	 * 获取最大值
	 * 
	 * @return 返回值说明 最大ID
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.17
	 */
	public int getMaxOrgID() {
		// 流水号
		Object objCode = tPlaneOrgRepository.getMaxOrgID();
		int iID = 0;
		if (objCode != null) {
			iID = Integer.parseInt(objCode.toString());
		}
		return iID;
	}

	/**
	 * 函数功能说明：后台 新建航空公司信息
	 *
	 * @param 参数说明 tPlaneOrg
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.19
	 */
	public void createPlaneOrg(TPlaneOrg tPlaneOrg, MultipartFile fSpare2, TSysUser sessionSysUser) {
		// 获得最大招标编号
		int iOrgID = common.createBaseCode(UtilConstants.TableName.T_PLANE_ORG);
		tPlaneOrg.setOrgID(iOrgID);
		// 创建所属公司ID 实体类为String类型 需要转化一下 hanxl 2020.11.19
		tPlaneOrg.setSpare1(String.valueOf(sessionSysUser.getOrgID()));
		// 1.定义上传的文件
		String localPath = planePath;
		if (fSpare2 != null) {
			// 2.获得文件名字
			String photoName = fSpare2.getOriginalFilename();

			// 3.上传
			String newPhotoName = FileNameUtils.getFileName(photoName);

			// 3.1 生成新的文件名
			String realPhotoPath = localPath + "/" + newPhotoName;

			// 3.2 保存文件
			File destPhoto = new File(realPhotoPath);

			// 判断文件目目录是否存在,不存在则新建
			if (!destPhoto.getParentFile().exists()) {
				destPhoto.getParentFile().mkdir();
			}

			try {
				fSpare2.transferTo(destPhoto);

			} catch (IllegalStateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			tPlaneOrg.setSpare2(realPhotoPath);
		}
		tPlaneOrg.setCreateDate(new Date());
		tPlaneOrg.setCreator(sessionSysUser.getUserName());
		tPlaneOrgRepository.save(tPlaneOrg.getOrgID());
		tPlaneOrgRepository.save(tPlaneOrg);
	}

	/**
	 * 函数功能说明：后台 修改航空公司信息 查询该信息
	 *
	 * @param 参数说明 tPlaneOrg
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.19
	 */
	public TPlaneOrg findByOrgID(int iOrgID) {
		return tPlaneOrgRepository.findByOrgID(iOrgID);
	}

	/**
	 * 函数功能说明：后台 修改航空公司信息
	 *
	 * @param 参数说明 tPlaneOrg
	 * @return 返回值说明 jsp页面
	 * @author 创建人 hanxl
	 * @date 创建日期 2021.03.19
	 */
	public void updatePlaneOrg(TPlaneOrg tPlaneOrg, MultipartFile fSpare2, TSysUser sessionSysUser) {
//		 定义一个新的实体类对象 
		TPlaneOrg dbPlaneOrg = tPlaneOrgRepository.findByOrgID(tPlaneOrg.getOrgID());
		dbPlaneOrg.setOrgName(tPlaneOrg.getOrgName());
		dbPlaneOrg.setName(tPlaneOrg.getName());
		dbPlaneOrg.setTel(tPlaneOrg.getTel());
		dbPlaneOrg.setMemo(tPlaneOrg.getMemo());
		// 1.定义上传的文件
		String localPath = planePath;
		if (fSpare2 != null) {
			// 2.获得文件名字
			String photoName = fSpare2.getOriginalFilename();

			// 3.上传
			String newPhotoName = FileNameUtils.getFileName(photoName);

			// 3.1 生成新的文件名
			String realPhotoPath = localPath + "/" + newPhotoName;

			// 3.2 保存文件
			File destPhoto = new File(realPhotoPath);

			// 判断文件目目录是否存在,不存在则新建
			if (!destPhoto.getParentFile().exists()) {
				destPhoto.getParentFile().mkdir();
			}

			try {
				fSpare2.transferTo(destPhoto);

			} catch (IllegalStateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			tPlaneOrg.setSpare2(realPhotoPath);
		}
		dbPlaneOrg.setModifyDate(new Date());
		dbPlaneOrg.setReviser(sessionSysUser.getUserName());
		tPlaneOrgRepository.save(dbPlaneOrg);
	}

}
